package org.birrap.ejb;

import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import org.birrap.entities.BaresCervezasTapasVasosT;
import org.birrap.entities.BaresCervezasTapasVasosTPK;
import org.birrap.entities.BaresUsuarioTPK;


@Stateless
public class BaresCervezasTapasVasosTBean implements BaresCervezasTapasVasosTBeanLocal {

    @PersistenceContext(unitName = "BirrApp-ejbPU")
    private EntityManager em;
      
    @Override
    public List<BaresCervezasTapasVasosT> findAll() {
    
        Query query = em.createNamedQuery("BaresCervezasTapasVasosT.findAll");
        
        return (List<BaresCervezasTapasVasosT>) query.getResultList();
     }

    @Override
    public BaresCervezasTapasVasosT findByIdBar(Integer id) {
        BaresCervezasTapasVasosT res = null;
        Query query = em.createNamedQuery("BaresCervezasTapasVasosT.findByIdBar").
                setParameter("idBar", id);
        
        try {
            res = (BaresCervezasTapasVasosT) query.getSingleResult();
        } catch(NoResultException e) {
            System.out.println("No existe el id de bar");
        }
        
        return res; 
    }
    
    @Override
    public List<BaresCervezasTapasVasosT> findBaresByIdBar(Integer id) {
        List<BaresCervezasTapasVasosT> res = null;
        Query query = em.createNamedQuery("BaresCervezasTapasVasosT.findBaresByIdBar").
                setParameter("idBar", id);
        
        try {
            res = (List<BaresCervezasTapasVasosT>) query.getResultList();
        } catch(NoResultException e) {
            System.out.println("No existe el id de bar");
        }
        
        return res; 
    }

    @Override
    public BaresCervezasTapasVasosT findByIdCerveza(Integer id) {
            BaresCervezasTapasVasosT res = null;
            Query query = em.createNamedQuery("BaresCervezasTapasVasosT.findByIdCerveza").
                       setParameter("idCerveza", id);
        
        try {
            res = (BaresCervezasTapasVasosT) query.getSingleResult();
        } catch(NoResultException e) {
            System.out.println("No existe el id de Cerveza");
        }
        
        return res; 
    }

    @Override
    public BaresCervezasTapasVasosT findByIdTapa(Integer id) {
        BaresCervezasTapasVasosT res = null;
            Query query = em.createNamedQuery("BaresCervezasTapasVasosT.findByIdTapa").
                       setParameter("idTapa", id);
        
        try {
            res = (BaresCervezasTapasVasosT) query.getSingleResult();
        } catch(NoResultException e) {
            System.out.println("No existe el id de Tapa");
        }
        
        return res; 
    }

    @Override
    public BaresCervezasTapasVasosT findByIdVaso(Integer id) {
        BaresCervezasTapasVasosT res = null;
            Query query = em.createNamedQuery("BaresCervezasTapasVasosT.findByIdVaso").
                       setParameter("idVaso", id);
        
        try {
            res = (BaresCervezasTapasVasosT) query.getSingleResult();
        } catch(NoResultException e) {
            System.out.println("No existe el id de Vaso");
        }
        
        return res; 
    
    }

    @Override
    public BaresCervezasTapasVasosT findByPrecio(Integer id) {
        BaresCervezasTapasVasosT res = null;
            Query query = em.createNamedQuery("BaresCervezasTapasVasosT.findByPrecio").
                       setParameter("idPrecio", id);
        
        try {
            res = (BaresCervezasTapasVasosT) query.getSingleResult();
        } catch(NoResultException e) {
            System.out.println("No existe el id de Precio");
        }
        
        return res; 
    }
    
    @Override
    public double findMasBarataByIdBar(Integer id){
        double res = 0.0;
            Query query = em.createNamedQuery("BaresCervezasTapasVasosT.findMasBarataByIdBar").
                    setParameter("idBar", id);
        
        try {
            res = Double.valueOf(query.getSingleResult().toString()) ;
        } catch(NoResultException e) {
            System.out.println("No existe el precio mas bajo con el idBar");
        }
        
        return res; 
        
    }
    
    @Override
    public BaresCervezasTapasVasosT findTodoMasBarataByIdBar(Integer id){
        BaresCervezasTapasVasosT res = null;
            Query query = em.createNamedQuery("BaresCervezasTapasVasosT.findTodoMasBarataByIdBar").
                    setParameter("idBar", id);
        
        try {
            List<BaresCervezasTapasVasosT> lista = query.getResultList();
            res = lista.get(0);
        } catch(NoResultException e) {
            System.out.println("No existe el precio mas bajo con el idBar");
        }
        
        return res; 
        
    }
    
    @Override
    public boolean remove(BaresCervezasTapasVasosTPK baresUsuarioTPK) {
        
        boolean correcto = false;
        int resultado = 0;
        
        Query query = em.createNamedQuery("BaresCervezasTapasVasosT.removeByBaresCervezasTapasVasosTPK")
                         .setParameter("idBar", baresUsuarioTPK.getIdBar())
                .setParameter("idTapa", baresUsuarioTPK.getIdTapa())
                .setParameter("idCerveza", baresUsuarioTPK.getIdCerveza())
                .setParameter("idVaso", baresUsuarioTPK.getIdVaso());
        
        resultado = query.executeUpdate();
        
        if (resultado > 0)
        {
            correcto = true;
        }
        
        return correcto;
    }
    
       @Override
    public BaresCervezasTapasVasosT insert(BaresCervezasTapasVasosT bar) {
        
        return update(bar);
    
    }

    @Override
    public BaresCervezasTapasVasosT update(BaresCervezasTapasVasosT bar) {
        
        return em.merge(bar);
    }
        @Override
    public void refresh(BaresCervezasTapasVasosT bar) {
        
        em.refresh(bar);
    }

}
